package android.home;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class DBAdapter {
	 public static final String KEY_ROWID = "_id";
	    public static final String KEY_ACCOUNT_NAME = "accountName";
	    public static final String KEY_AMOUNT = "amount";
	    private static final String TAG = "DBAdapter";
	    
	    private static final String DATABASE_NAME = "Budget";
	    private static final String DATABASE_TABLE = "Account";
	    private static final int DATABASE_VERSION = 1;
	    
	    private static final String DATABASE_CREATE =
	            "create table Account (_id integer primary key autoincrement, "
	            + "accountName text not null, amount text not null);";
	            
	   private final Context context;
	   private DatabaseHelper DBHelper ;
	   private SQLiteDatabase db;
	   // Contructor
	   public DBAdapter (Context ctx){
		   this.context = ctx;
		   DBHelper = new DatabaseHelper(this.context);
	   }
	   
	  //---opens the database---
	    public DBAdapter open() throws SQLException 
	    {
	        db = DBHelper.getWritableDatabase();
	        return this;
	    }

	    //---closes the database---    
	    public void close() 
	    {
	        DBHelper.close();
	    }
	    
	    //---insert a account into the database---
	    public long insertAccount(String name, String amount) 
	    {
	        ContentValues initialValues = new ContentValues();
	        initialValues.put(KEY_ACCOUNT_NAME, name);
	        initialValues.put(KEY_AMOUNT, amount);
	        return db.insert(DATABASE_TABLE, null, initialValues);
	    }

	    //---deletes a particular account---
	    public boolean deleteTitle(long rowId) 
	    {
	        return db.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0;
	    }

	    //---retrieves all the accounts---
	    public Cursor getAllTitles() 
	    {
	        return db.query(DATABASE_TABLE, new String[] {
	        		KEY_ROWID, 
	        		KEY_ACCOUNT_NAME,
	        		KEY_AMOUNT}, 
	                null, 
	                null, 
	                null, 
	                null, 
	                null);
	    }

	    //---retrieves a particular account---
	    public Cursor getAccount(long rowId) throws SQLException 
	    {
	        Cursor mCursor =
	                db.query(true, DATABASE_TABLE, new String[] {
	                		KEY_ROWID,
	                		KEY_ACCOUNT_NAME, 
	                		KEY_AMOUNT}, 
	                		KEY_ROWID + "=" + rowId, 
	                		null,
	                		null, 
	                		null, 
	                		null, 
	                		null);
	        if (mCursor != null) {
	            mCursor.moveToFirst();
	        }
	        return mCursor;
	    }

	    //---updates a account---
	    public boolean updateAccount(long rowId, String name, 
	    String amount) 
	    {
	        ContentValues args = new ContentValues();
	        args.put(KEY_ACCOUNT_NAME, name);
	        args.put(KEY_AMOUNT, amount);
	        return db.update(DATABASE_TABLE, args, 
	                         KEY_ROWID + "=" + rowId, null) > 0;
	    }
	    
	    
        private static class DatabaseHelper extends SQLiteOpenHelper 
        {
            DatabaseHelper(Context context) 
            {
                super(context, DATABASE_NAME, null, DATABASE_VERSION);
            }

            @Override
            public void onCreate(SQLiteDatabase db) 
            {
                db.execSQL(DATABASE_CREATE);
            }

            @Override
            public void onUpgrade(SQLiteDatabase db, int oldVersion, 
                                  int newVersion) 
            {
                Log.w(TAG, "Upgrading database from version " + oldVersion 
                      + " to "
                      + newVersion + ", which will destroy all old data");
                db.execSQL("DROP TABLE IF EXISTS Account");
                onCreate(db);
            }
        }    
}
